home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / apps / 93 / applic / svbndpgm.bas < prev    next >
BASIC Source File  |  1987-01-15  |  24KB  |  515 lines

  1. 10    '*************************************************************************
  2. 20    '*                         SAVINGS BOND PROGRAM                          *
  3. 30    '*                    WRITTEN 12-10-86 BY DICK STUBBS                     *
  4. 40    '*                        400 NO. STUBBS BAY ROAD                        *
  5. 50    '*                        LONG LAKE, MINN. 55356                         *
  6. 60    '*************************************************************************
  7. 70    '
  8. 80    '*************************************************************************
  9. 90    '* THIS PROGRAM IS A MENU DRIVEN PROGRAM THAT ALLOWS YOU TO KEEP TRACK   *
  10. 100   '* OF YOUR INVESTMENT IN U.S. SAVINGS BONDS BY SELECTING AMONG VARIOUS   *
  11. 110   '* OPTIONS OFFERED TO YOU ON THE MAIN MENU.  ALL SELECTIONS ARE SELF-    *
  12. 120   '* EXPLANATORY, AND PROMPT YOU FOR THE REQUIRED INPUT.                    *
  13. 130   '*************************************************************************
  14. 140   '
  15. 150   '*************************************************************************
  16. 160   '*                          VARIABLES USED:                              *
  17. 170   '*   AGAIN$=PROGRAM CONTROL VARIABLE,     AMOUNT$=AMOUNT ARRAY           *
  18. 180   '*   A$=AMOUNT STRING,                    BD$=BOND DATE                  *
  19. 190   '*   BPM$=BOND PRINT MASK,                BVPM$=BOND VALUE PRINT MASK    *
  20. 200   '*   CAT$=CATEGORY NAME,                  CATNAME$=TITLE OF CATEGORY     *
  21. 210   '*   CD$=CORRECTED DATA,                  CONTINUE$=CONTROL VARIABLE     *
  22. 220   '*   COST$=ORIGINAL COST ARRAY,           C$=COST STRING                 *
  23. 230   '*   D=COUNTER,                           D$=DATE STRING                 *
  24. 240   '*   DATE$=DATE ARRAY,                    DI=COUNTER                     *
  25. 250   '*   EE=NUMBER OF EE  BONDS,              EN=NUMBER OF E BONDS           *
  26. 260   '*   EV=VALUE OF EE BONDS,                FILENAME$=FILENAME             *
  27. 270   '*   FLAG=CONTROL VARIABLE,               FV=FACE VALUE                  *
  28. 280   '*   I$=INPUT STRING,                     IN$=INPUT ARRAY                *
  29. 290   '*   JD=JULIAN DATE,                      LN=LINE NUMBER                 *
  30. 300   '*   LR=LAST RECORD,                      M$=MATURE DATE STRING          *
  31. 310   '*   MATURE$=MATURE DATE ARRAY,           MB=NUMBER OF MATURE BONDS      *
  32. 320   '*   MN$=MONTH NAME,                      MN=MONTH COUNTER               *
  33. 330   '*   MO$=MONTH STRING,                    MONTH=MONTH NUMBER             *
  34. 340   '*   MV=MATURE VALUE,                     MY$=CURRENT MONTH,YEAR         *
  35. 350   '*   N$=BOND NUMBER,                      NUMBER$=BOND NUMBER ARRAY      *
  36. 360   '*   OK$=CONTROL VARIABLE,                OP$=OPTION SELECTION STRING    *
  37. 370   '*   OP=OPTION SELECTION VALUE,           PAGENO=PAGE NUMBER             *
  38. 380   '*   R=RECORD NUMBER,                     RN=RECORD NUMBER               *
  39. 390   '*   SD$=SEARCH DATE,                     T$=BOND TYPE                   *
  40. 400   '*   TYPE$=BOND TYPE ARRAY,               TA=TOTAL AMOUNT                *
  41. 410   '*   V=VALUE OF E BONDS                                                  *
  42. 420   '*************************************************************************
  43. 430   '
  44. 440   '*************************************************************************
  45. 450   '*       INITIALIZE VARIABLES, CHOOSE INPUT FILE  & DEFINE ARRAYS        *
  46. 460   '*************************************************************************
  47. 470   '
  48. 480   CLEAR
  49. 490   FULLW 2:WIDTH 80:WIDTH LPRINT 80
  50. 500   OPTION BASE 1
  51. 510   DIM DATE$(100),TYPE$(100),COST$(100),NUMBER$(100),AMOUNT$(100)
  52. 520   DIM MATURE$(100),IN$(100)
  53. 530   DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
  54. 540   BPM$="####"        
  55. 550   BVPM$="$$##,###.##"
  56. 560   FLAG=1
  57. 570   WHILE FLAG=1
  58. 580   CLEARW 2:GOTOXY 25,1:PRINT "SAVINGS BOND PROGRAM":GOTOXY 6,5
  59. 590   INPUT "WHAT IS THE NAME OF THE FILE YOU'LL BE WORKING WITH";FILENAME$
  60. 600   GOTOXY 23,10:PRINT "FILE NAME IS '";FILENAME$;"'"
  61. 610   GOTOXY 11,16
  62. 620   LINE INPUT "IF CORRECT INPUT 'Y' <RETURN>, ELSE 'N' <RETURN> ";CORRECT$
  63. 630   IF CORRECT$="Y" THEN FLAG=0    
  64. 640   WEND
  65. 650   '
  66. 660   '*************************************************************************
  67. 670   '*                     DISPLAY MENU & CHOOSE OPTION                      *
  68. 680   '*************************************************************************
  69. 690   '
  70. 700   CLEARW 2:GOTOXY 15,1:PRINT "DO YOU WANT TO --":PRINT
  71. 710   PRINT TAB(25);"(1) CREATE A NEW FILE"
  72. 720   PRINT TAB(25);"(2) ADD TO AN EXISTING FILE"
  73. 730   PRINT TAB(25);"(3) LIST/CORRECT INDIVIDUAL BONDS"
  74. 740   PRINT TAB(25);"(4) DELETE ITEMS FROM FILE"
  75. 750   PRINT TAB(25);"(5) LIST ENTIRE FILE"
  76. 760   PRINT TAB(25);"(6) LIST BOND SUMMARY"
  77. 770   PRINT TAB(25);"(7) PRINT ENTIRE FILE"
  78. 780   PRINT TAB(25);"(8) PRINT BOND SUMMARY"
  79. 790   PRINT TAB(25);"(9) PRINT MATURE BOND LIST"
  80. 800   PRINT TAB(25);"(10) USE ANOTHER FILE"
  81. 810   PRINT TAB(25);"(11) EXIT PROGRAM
  82. 820   GOTOXY 24,15:LINE INPUT "OPTION DESIRED? ";OP$:OP=VAL(OP$)
  83. 830   IF OP<1 OR OP>11 THEN 820
  84. 840   ON OP GOTO 870,1010,1230,1830,2220,2540,2730,3080,3360,3770,3830
  85. 850   '
  86. 860   '*************************************************************************
  87. 870   '*                       CREATE A NEW FILE ROUTINE                       *
  88. 880   '*************************************************************************
  89. 890   '
  90. 900   GOSUB INPUTDATA    
  91. 910   CLEARW 2:GOTOXY 23,7:PRINT "NOW RECORDING FILE '";FILENAME$;"'"
  92. 920   OPEN "R",#1,FILENAME$,47
  93. 930   FIELD #1,47 AS IN$
  94. 940   FOR R=1 TO X-1
  95. 950   LSET IN$=IN$(R)
  96. 960   PUT #1,R
  97. 970   NEXT R
  98. 980   CLOSE #1
  99. 990   GOTO 700
  100. 1000  '
  101. 1010  '*************************************************************************
  102. 1020  '*                      ROUTINE FOR ADDING DATA                          *
  103. 1030  '*************************************************************************
  104. 1040  '
  105. 1050  CLEARW 2:GOTOXY 26,7:PRINT "CHECKING LAST RECORD ON FILE"
  106. 1060  OPEN "R",#1,FILENAME$,47
  107. 1070  FIELD #1,47 AS IN$
  108. 1080  GET #1,LOF(1)
  109. 1090  LR=LOF(1)
  110. 1100  CLEARW 2:GOTOXY 5,8
  111. 1110  PRINT "LAST DATE ON FILE IS ";LEFT$(IN$,10);" AND LISTS BOND NUMBER ";
  112. 1120  PRINT MID$(IN$,18,15):GOTOXY 25,15
  113. 1130  PRINT "PRESS <RETURN> TO CONTINUE ";:LINE INPUT CONTINUE$
  114. 1140  GOSUB INPUTDATA
  115. 1150  CLEARW 2:GOTOXY 31,8:PRINT "NOW UPDATING FILE"
  116. 1160  FOR R=1 TO X-1
  117. 1170  LSET IN$=IN$(R)
  118. 1180  PUT #1,R+LR
  119. 1190  NEXT R
  120. 1200  CLOSE #1
  121. 1210  GOTO 700
  122. 1220  '
  123. 1230  '*************************************************************************
  124. 1240  '*                       ROUTINE FOR MAKING CORRECTIONS                  *
  125. 1250  '*************************************************************************
  126. 1260  '
  127. 1270  OPEN "R",#1,FILENAME$,47
  128. 1280  FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
  129. 1290  CLEARW 2:GOTOXY 23,1:PRINT "BOND DATA LIST/CORRECTION ROUTINE":PRINT
  130. 1300  PRINT TAB(7);"DATE OF BOND DATA TO BE LISTED (ENTER AS 'MONTH,YEAR') ";
  131. 1310  LINE INPUT BD$:SD$=LEFT$(BD$+"  ",10)
  132. 1320  CLEARW 2:GOTOXY 31,8:PRINT "NOW SEARCHING FILE"
  133. 1330  FOR R=1 TO LOF(1)
  134. 1340  GET #1,R
  135. 1350  IF D$=SD$ THEN 1430
  136. 1360  NEXT R
  137. 1370  CLEARW 2:GOTOXY 20,1:PRINT "'";BD$;"' IS NOT ON FILE '";FILENAME$;"
  138. 1380  PRINT TAB(18);"DO YOU WANT TO TRY ANOTHER DATE (Y OR N)? ";
  139. 1390  LINE INPUT AGAIN$
  140. 1400  IF AGAIN$="Y" THEN 1300
  141. 1410  IF AGAIN$="N" THEN 1800
  142. 1420  IF AGAIN$<>"Y" OR AGAIN$<>"N" THEN 1370
  143. 1430  CLEARW 2:GOTOXY 10,1:PRINT "BOND DATA FOR FILE '";FILENAME$;"'";
  144. 1440  PRINT TAB(43);"RECORD NUMBER";R
  145. 1450  PRINT TAB(4);"ISSUE DATE";TAB(18);"TYPE";TAB(26);"$COST";TAB(39);"NUMBER";
  146. 1460  PRINT TAB(53);"$AMOUNT";TAB(64);"MATURES ON"
  147. 1470  PRINT TAB(4);"__________";TAB(18);"____";TAB(26);"_____";TAB(39);"______";
  148. 1480  PRINT TAB(53);"_______";TAB(64);"__________"
  149. 1490  PRINT
  150. 1500  PRINT TAB(4);D$;TAB(19);T$;TAB(26);C$;TAB(36);N$;TAB(55);A$;TAB(64);M$
  151. 1510  PRINT:PRINT TAB(18);"ENTER THE NAME OF THE CATEGORY TO BE CHANGED"
  152. 1520  PRINT TAB(13);"('NONE' IF NO CHANGES ARE TO BE MADE), A PLUS SIGN (+)";
  153. 1530  PRINT TAB(12);"TO DISPLAY THE NEXT RECORD, A MINUS SIGN (-) TO DISPLAY"
  154. 1540  PRINT TAB(15);"THE PREVIOUS RECORD, OR AN 'A' TO SHOW ANOTHER BOND."
  155. 1550  PRINT TAB(16);"CATEGORY NAMES ARE:  'D' FOR ISSUE DATE, 'T' FOR"
  156. 1560  PRINT TAB(14);"BOND TYPE, 'C' FOR ORIGINAL COST, 'N' FOR BOND NUMBER,"
  157. 1570  PRINT TAB(14);"'V' FOR FACE VALUE (AMOUNT), AND 'M' FOR MATURE DATE."
  158. 1580  PRINT TAB(20);"ENTER CATEGORY (OR FUNCTION) DESIRED ";:LINE INPUT CAT$
  159. 1590  IF CAT$="NONE" OR CAT$="A" OR CAT$="+" OR CAT$="-" OR CAT$="D" THEN 1620
  160. 1600  IF CAT$="T" OR CAT$="C" OR CAT$="N" OR CAT$="V" OR CAT$="M" THEN 1620
  161. 1610  PRINT TAB(22);"'";CAT$;"' IS INVALID.  PLEASE ENTER AGAIN":GOTO 1580
  162. 1620  IF CAT$="NONE" THEN 1800
  163. 1630  IF CAT$="+" THEN R=R+1:GET #1,R:GOTO 1430
  164. 1640  IF CAT$="-" THEN R=R-1:GET #1,R:GOTO 1430 
  165. 1650  IF CAT$="A" THEN 1290
  166. 1660  IF CAT$="D" THEN CATNAME$="ISSUE DATE"
  167. 1670  IF CAT$="T" THEN CATNAME$="BOND TYPE"
  168. 1680  IF CAT$="C" THEN CATNAME$="ORIGINAL COST"
  169. 1690  IF CAT$="N" THEN CATNAME$="BOND NUMBER"
  170. 1700  IF CAT$="V" THEN CATNAME$="FACE VALUE (AMOUNT)"
  171. 1710  IF CAT$="M" THEN CATNAME$="MATURE DATE"
  172. 1720  PRINT:PRINT TAB(20);"WHAT IS THE CORRECT ";CATNAME$;"? ";:LINE INPUT CD$
  173. 1730  IF CAT$="D" THEN LSET D$=LEFT$(CD$+"  ",10)
  174. 1740  IF CAT$="T" THEN LSET T$=LEFT$(CD$+" ",2)
  175. 1750  IF CAT$="C" THEN LSET C$=LEFT$(CD$+"  ",5)
  176. 1760  IF CAT$="N" THEN LSET N$=LEFT$(CD$+"       ",15)
  177. 1770  IF CAT$="V" THEN LSET A$=LEFT$(CD$+"   ",5)
  178. 1780  IF CAT$="M" THEN RSET M$=RIGHT$("  "+CD$,10)
  179. 1790  PUT #1,R:GOTO 1430
  180. 1800  CLOSE #1
  181. 1810  GOTO 700
  182. 1820  '
  183. 1830  '*************************************************************************
  184. 1840  '*                       ROUTINE FOR DELETING ITEMS                      *
  185. 1850  '*************************************************************************
  186. 1860  '
  187. 1870  CLEARW 2:GOTOXY 13,1:PRINT "ENTER DATE(S) TO BE DELETED.  ";
  188. 1880  PRINT "INPUT 'Q' WHEN FINISHED.":X=1:PRINT
  189. 1890  PRINT TAB(30);"DATE? ";:LINE INPUT DATE$(X)
  190. 1900  IF DATE$(X)="Q" THEN 1940
  191. 1910  DATE$(X)=LEFT$(DATE$(X)+"  ",10)
  192. 1920  X=X+1
  193. 1930  GOTO 1890
  194. 1940  CLEARW 2:GOTOXY 25,1:PRINT "ALL DATA FILED UNDER DATE(S):":PRINT
  195. 1950  FOR DI=1 TO X-1
  196. 1960  PRINT TAB(35);DATE$(DI)
  197. 1970  NEXT DI
  198. 1980  PRINT:PRINT TAB(20);"WILL BE DELETED.  IS THAT OK (Y OR N)? ";
  199. 1990  LINE INPUT OK$
  200. 2000  IF OK$="Y" THEN 2030
  201. 2010  IF OK$="N" THEN 1830
  202. 2020  IF OK$<>"Y" OR OK$<>"N" THEN 1940
  203. 2030  CLEARW 2:GOTOXY 31,7:PRINT "NOW UPDATING FILE"
  204. 2040  OPEN "R",#1,FILENAME$,47
  205. 2050  FIELD #1,47 AS I$
  206. 2060  OPEN "R",#2,"UPDATED.DAT",47
  207. 2070  FIELD #2,47 AS IN$
  208. 2080  FOR R=1 TO LOF(1)
  209. 2090  GET #1,R
  210. 2100  FOR DI=1 TO X-1
  211. 2110  IF LEFT$(I$,10)=DATE$(DI) THEN 2160 
  212. 2120  NEXT DI
  213. 2130  LSET IN$=I$
  214. 2140  RN=RN+1
  215. 2150  PUT #2,RN
  216. 2160  NEXT R
  217. 2170  CLOSE
  218. 2180  KILL FILENAME$
  219. 2190  NAME "UPDATED.DAT" AS FILENAME$
  220. 2200  GOTO 700
  221. 2210  '
  222. 2220  '************************************************************************
  223. 2230  '*                     ROUTINE TO LIST ENTIRE FILE                      *
  224. 2240  '************************************************************************
  225. 2250  '
  226. 2260  CLEARW 2:GOTOXY 30,8:PRINT "NOW READING FILE"
  227. 2270  OPEN "R",#1,FILENAME$,47
  228. 2280  FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
  229. 2290  CLEARW 2:LR=LOF(1)
  230. 2300  R=1
  231. 2310  WHILE R<=LR
  232. 2320  PAGENO=PAGENO+1
  233. 2330  GOTOXY 18,1:PRINT "BOND DATA FOR FILE '";FILENAME$;"'";
  234. 2340  PRINT TAB(49);"PAGE";PAGENO
  235. 2350  PRINT TAB(4);"ISSUE DATE";TAB(18);"TYPE";TAB(26);"COST";TAB(39);"NUMBER";
  236. 2360  PRINT TAB(53);"AMOUNT";TAB(63);"MATURES ON"
  237. 2370  PRINT TAB(4);"__________";TAB(18);"____";TAB(26);"____";TAB(39);"______";
  238. 2380  PRINT TAB(53);"______";TAB(63);"__________" 
  239. 2390  PRINT
  240. 2400  FOR LN=1 TO 10
  241. 2410  GET #1,R
  242. 2420  PRINT TAB(4);D$;TAB(19);T$;TAB(25);"$";C$;TAB(36);N$;
  243. 2430  PRINT TAB(54);"$";A$;TAB(63);M$
  244. 2440  R=R+1
  245. 2450  IF R>LR THEN LN=13
  246. 2460  NEXT LN
  247. 2470  PRINT:PRINT TAB(5);"PRESS <RETURN> TO CONTINUE OR ENTER 'X' ";
  248. 2480  PRINT "TO RETURN TO THE MAIN MENU ";:LINE INPUT CONTINUE$
  249. 2490  IF CONTINUE$="X" THEN R=LR+1
  250. 2500  CLEARW 2
  251. 2510  WEND
  252. 2520  CLOSE #1:PAGENO=0:GOTO 700
  253. 2530  '
  254. 2540  '************************************************************************
  255. 2550  '*                    ROUTINE TO LIST BOND SUMMARY                      *
  256. 2560  '************************************************************************
  257. 2570  '
  258. 2580  GOSUB INPUTDATE
  259. 2590  GOSUB BONDSUM
  260. 2600  CLEARW 2:GOTOXY 24,1:PRINT "SUMMARY OF FILE NAMED '";FILENAME$;"'":PRINT
  261. 2610  PRINT TAB(14);"TOTAL FACE VALUE OF YOUR SAVINGS BONDS:  ";
  262. 2620  PRINT USING BVPM$;FV
  263. 2630  PRINT TAB(14);"NUMBER OF 'E' BONDS:";TAB(49);:PRINT USING BPM$;EN
  264. 2640  PRINT TAB(14);"NUMBER OF 'EE' BONDS:";TAB(49);:PRINT USING BPM$;EE
  265. 2650  PRINT TAB(14);"FACE VALUE OF 'E' BONDS:";TAB(42);:PRINT USING BVPM$;V
  266. 2660  PRINT TAB(14);"FACE VALUE OF 'EE' BONDS:";TAB(42);:PRINT USING BVPM$;EV
  267. 2670  PRINT:PRINT TAB(27);MB;"BONDS MATURE BY ";MY$
  268. 2680  PRINT TAB(18);"YOU HAVE ";:PRINT USING BVPM$;MV;
  269. 2690  PRINT " WORTH OF MATURE BONDS!!!"
  270. 2700  PRINT:PRINT TAB(26);"PRESS <RETURN> TO CONTINUE";:LINE INPUT CONTINUE$
  271. 2710  GOTO 700
  272. 2720  '
  273. 2730  '************************************************************************
  274. 2740  '*                    ROUTINE TO PRINT ENTIRE FILE                      *
  275. 2750  '************************************************************************
  276. 2760  '
  277. 2770  CLEARW 2:GOTOXY 14,6:PAGENO=0:FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
  278. 2780  PRINT "TURN ON THE PRINTER.  LINE UP THE FOLD IN THE PAPER"
  279. 2790  PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
  280. 2800  PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
  281. 2810  GOSUB INPUTDATE
  282. 2820  CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING TITLES"
  283. 2830  GOSUB HEADINGS
  284. 2840  CLEARW 2:GOTOXY 31,7:PRINT "NOW PRINTING FILE"
  285. 2850  OPEN "R",#1,FILENAME$,47
  286. 2860  FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
  287. 2870  FOR R=1 TO LOF(1)
  288. 2880  GET #1,R
  289. 2890  LPRINT TAB(1);D$;TAB(17);T$;TAB(27);"$";C$;TAB(40);N$;TAB(59);"$";A$;
  290. 2900  LPRINT TAB(69);M$
  291. 2910  PL=PL+1
  292. 2920  IF PL=63 THEN GOSUB NEWPAGE
  293. 2930  NEXT R
  294. 2940  CLOSE #1
  295. 2950  CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING SUMMARY
  296. 2960  FOR LF=1 TO 66-PL
  297. 2970  LPRINT
  298. 2980  NEXT LF
  299. 2990  GOSUB BONDSUM
  300. 3000  PAGENO=PAGENO+1
  301. 3010  LPRINT TAB(7);CHR$(27);"W1";CHR$(27);"E";"PRINTOUT OF FILE NAMED ";
  302. 3020  LPRINT FILENAME$:LPRINT CHR$(27);"W0";
  303. 3030  LPRINT TAB(31);"(AS OF ";MY$;")";TAB(73);"PAGE";PAGENO:LPRINT CHR$(27);"F"
  304. 3040  LPRINT CHR$(27);"-1";CHR$(27);"E";CHR$(27);"D";CHR$(33);CHR$(0);
  305. 3050  LPRINT CHR$(9);"BOND SUMMARY";CHR$(27);"-0";CHR$(27);"F";CHR$(27);"@"
  306. 3060  LPRINT:GOTO 3220
  307. 3070  '
  308. 3080  '*************************************************************************
  309. 3090  '*                    ROUTINE TO PRINT BOND SUMMARY                      *
  310. 3100  '*************************************************************************
  311. 3110  '
  312. 3120  CLEARW 2:GOTOXY 14,6
  313. 3130  PRINT "TURN ON THE PRINTER.  LINE UP THE FOLD IN THE PAPER"
  314. 3140  PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
  315. 3150  PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
  316. 3160  GOSUB INPUTDATE
  317. 3170  GOSUB BONDSUM
  318. 3180  CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING SUMMARY
  319. 3190  LPRINT TAB(6);CHR$(27);"W1";CHR$(27);"E";"SUMMARY OF FILE NAMED '";
  320. 3200  LPRINT FILENAME$;"'";CHR$(27);"W0";
  321. 3210  LPRINT TAB(31);"(AS OF ";MY$;")";CHR$(27);"F":LPRINT
  322. 3220  LPRINT TAB(23);"TOTAL FACE VALUE OF BONDS:";TAB(54);
  323. 3230  LPRINT USING BVPM$;FV
  324. 3240  LPRINT TAB(23);"NUMBER OF 'E' BONDS HELD:";TAB(61);:LPRINT USING BPM$;EN
  325. 3250  LPRINT TAB(23);"NUMBER OF 'EE' BONDS HELD:";TAB(61);:LPRINT USING BPM$;EE
  326. 3260  LPRINT TAB(23);"TOTAL VALUE OF 'E' BONDS HELD:";TAB(54);
  327. 3270  LPRINT USING BVPM$;V
  328. 3280  LPRINT TAB(23);"TOTAL VALUE OF 'EE' BONDS HELD:";TAB(54);
  329. 3290  LPRINT USING BVPM$;EV
  330. 3300  LPRINT TAB(23);"NUMBER OF MATURE BONDS:";TAB(61);:LPRINT USING BPM$;MB
  331. 3310  LPRINT TAB(23);"FACE VALUE OF MATURE BONDS:";TAB(54);
  332. 3320  LPRINT USING BVPM$;MV
  333. 3330  LPRINT CHR$(12):FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
  334. 3340  GOTO 700
  335. 3350  '
  336. 3360  '*************************************************************************
  337. 3370  '*                  ROUTINE TO PRINT MATURE BOND LIST                    *
  338. 3380  '*************************************************************************
  339. 3390  '
  340. 3400  CLEARW 2:GOTOXY 14,6
  341. 3410  PRINT "TURN ON THE PRINTER.  LINE UP THE FOLD IN THE PAPER"
  342. 3420  PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
  343. 3430  PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
  344. 3440  GOSUB INPUTDATE
  345. 3450  CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING TITLES"
  346. 3460  LPRINT TAB(13);CHR$(27);"W1";CHR$(27);"E";"'";FILENAME$;
  347. 3470  LPRINT "' MATURE BOND LIST"
  348. 3480  LPRINT CHR$(27);"W0";TAB(31);"(AS OF ";MY$;")";CHR$(27);"F":LPRINT
  349. 3490  LPRINT CHR$(27);"D";CHR$(17);CHR$(31);CHR$(52);CHR$(67);CHR$(0)
  350. 3500  LPRINT CHR$(27);"-1";"DATE ISSUED";CHR$(9);"TYPE";CHR$(9);
  351. 3510  LPRINT "BOND  NUMBER";CHR$(9);"AMOUNT";CHR$(9);"DATE MATURE"
  352. 3520  LPRINT CHR$(27);"-0";CHR$(27);"@"
  353. 3530  CLEARW 2:GOTOXY 32,7:PRINT "NOW READING FILE"
  354. 3540  OPEN "R",#1,FILENAME$,47
  355. 3550  FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
  356. 3560  CLEARW 2:GOTOXY 31,7:PRINT "NOW PRINTING LIST"
  357. 3570  FOR R=1 TO LOF(1)
  358. 3580  GET #1,R
  359. 3590  FOR D=1 TO 12
  360. 3600  READ MO$
  361. 3610  IF MO$=LEFT$(D$,3) THEN 3630
  362. 3620  NEXT D
  363. 3630  RESTORE:JD=VAL(RIGHT$(M$,4))+D/100
  364. 3640  IF JD>YM THEN 3690
  365. 3650  LPRINT TAB(2);D$;TAB(19);T$;TAB(32);N$;TAB(53);
  366. 3660  LPRINT USING "$$##";VAL(A$);
  367. 3670  LPRINT TAB(68);M$:TA=TA+VAL(A$):MB=MB+1
  368. 3680  NEXT R
  369. 3690  CLOSE #1:LPRINT:LPRINT:LPRINT
  370. 3700  LPRINT TAB(17);"TOTAL NUMBER OF MATURE BONDS:";TAB(58);
  371. 3710  LPRINT USING BPM$;MB
  372. 3720  LPRINT TAB(17);"TOTAL FACE VALUE OF MATURE BONDS:";TAB(51);
  373. 3730  LPRINT USING BVPM$;TA
  374. 3740  LPRINT CHR$(12):FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
  375. 3750  GOTO 700
  376. 3760  '
  377. 3770  '************************************************************************
  378. 3780  '*                     ROUTINE TO USE ANOTHER FILE                      *
  379. 3790  '************************************************************************
  380. 3800  '
  381. 3810  CLEARW 2:GOTO 560
  382. 3820  ' 
  383. 3830  '************************************************************************
  384. 3840  '*                       ROUTINE TO END PROGRAM                         *
  385. 3850  '************************************************************************
  386. 3860  '
  387. 3870  GOTO 5140
  388. 3880  '
  389. 3890  '************************************************************************
  390. 3900  '*                        INPUTDATA SUBROUTINE                          *
  391. 3910  '************************************************************************
  392. 3920  '
  393. 3930  INPUTDATA:
  394. 3940  X=1
  395. 3950  CLEARW 2:GOTOXY 29,1:PRINT "INPUT BOND INFORMATION"
  396. 3960  PRINT TAB(24);"INPUT 'Q' <RETURN> WHEN FINISHED"
  397. 3970  PRINT TAB(16);"ISSUE DATE (ENTER AS 'MONTH,YEAR')? ";:LINE INPUT DATE$(X)
  398. 3980  RESTORE:IF DATE$(X)="Q" THEN 4470
  399. 3990  IF LEN(DATE$(X))<8 OR LEN(DATE$(X))>10 THEN 4040
  400. 4000  FOR MONTH=1 TO 12
  401. 4010  READ MN$
  402. 4020  IF MN$=LEFT$(DATE$(X),3) THEN 4080
  403. 4030  NEXT MONTH
  404. 4040  PRINT TAB(23);"'";DATE$(X);"' IS AN INVALID DATE!!"
  405. 4050  PRINT TAB(16);"USE AT LEAST 8 BUT NOT MORE THAN 10 CHARACTERS"
  406. 4060  PRINT TAB(16);"WHAT IS THE CORRECT DATE (ENTER AS MONTH,YEAR)? ";
  407. 4070  LINE INPUT DATE$(X):GOTO 3980
  408. 4080  PRINT TAB(28);"BOND TYPE (E OR EE)? ";:LINE INPUT TYPE$(X)
  409. 4090  IF TYPE$(X)="E" OR TYPE$(X)="EE" THEN 4140
  410. 4100  PRINT TAB(17);"'";TYPE$(X);"' IS AN INVALID BOND TYPE!!!  ";
  411. 4110  PRINT "USE 'E' OR 'EE'"
  412. 4120  PRINT TAB(26);"WHAT IS THE CORRECT TYPE? ";:LINE INPUT TYPE$(X)
  413. 4130  GOTO 4090
  414. 4140  PRINT TAB(21);"ORIGINAL COST (ENTER AS $XX.XX)? $";:LINE INPUT COST$(X)
  415. 4150  IF LEN(COST$(X))<=5 AND VAL(RIGHT$(COST$(X),3))<1 THEN 4180
  416. 4160  PRINT TAB(23);"'$";COST$(X);"' IS AN INCORRECT AMOUNT!!!"
  417. 4170  PRINT TAB(24);"ENTER CORRECT AMOUNT AS '$XX.XX'":GOTO 4140
  418. 4180  PRINT TAB(21);"BOND NUMBER? ";:LINE INPUT NUMBER$(X)
  419. 4190  IF LEN(NUMBER$(X))>8 AND LEN(NUMBER$(X))<15 THEN 4260
  420. 4200  PRINT TAB(15);"'";NUMBER$(X);"' IS AN INVALID BOND SERIAL ";
  421. 4210  PRINT "NUMBER!!!"
  422. 4220  PRINT TAB(16);"THE NUMBER MUST BE BETWEEN 9 AND 15 DIGITS LONG."
  423. 4230  PRINT TAB(27);"YOU TRIED TO USE";LEN(NUMBER$(X));"DIGITS."
  424. 4240  PRINT TAB(21);"WHAT IS THE CORRECT NUMBER? ";:LINE INPUT NUMBER$(X)
  425. 4250  GOTO 4190
  426. 4260  PRINT TAB(21);"BOND AMOUNT (ENTER AS $XXX)? $";:LINE INPUT AMOUNT$(X)
  427. 4270  IF LEN(AMOUNT$(X))<=3 THEN 4310
  428. 4280  PRINT TAB(23);"'$";AMOUNT$(X);"' IS AN INCORRECT AMOUNT!!!"
  429. 4290  PRINT TAB(15);"MAXIMUM OF 3 DIGITS ALLOWED.  ";
  430. 4300  PRINT "YOU TRIED TO USE";LEN(AMOUNT$(X)):GOTO 4260
  431. 4310  RESTORE:PRINT TAB(19);"DATE MATURE (ENTER AS MONTH,YEAR)? ";
  432. 4320  LINE INPUT MATURE$(X)  
  433. 4330  IF LEN(MATURE$(X))<8 OR LEN(MATURE$(X))>10 THEN 4380
  434. 4340  FOR MN=1 TO 12
  435. 4350  READ MN$
  436. 4360  IF MN$=LEFT$(MATURE$(X),3) THEN 4410
  437. 4370  NEXT MN
  438. 4380  PRINT TAB(23);"'";MATURE$(X);"' IS AN INVALID DATE!!!"
  439. 4390  PRINT TAB(17);"USE AT LEAST 8 BUT NOT MORE THAN 10 CHARACTERS"
  440. 4400  GOTO 4310
  441. 4410  LI$=LEFT$(DATE$(X)+"  ",10)+LEFT$(TYPE$(X)+" ",2)
  442. 4420  MI$=LI$+LEFT$(COST$(X)+"    ",5)+LEFT$(NUMBER$(X)+"        ",15)
  443. 4430  IN$(X)=MI$+LEFT$(AMOUNT$(X)+"   ",5)+RIGHT$("  "+MATURE$(X),10)
  444. 4440  X=X+1
  445. 4450  LI$="":MI$=""
  446. 4460  GOTO 3950
  447. 4470  RETURN
  448. 4480  '
  449. 4490  '*************************************************************************
  450. 4500  '*                          INPUT DATE ROUTINE                           *
  451. 4510  '*************************************************************************
  452. 4520  '
  453. 4530  INPUTDATE:
  454. 4540  CLEARW 2:GOTOXY 10,1:PRINT "ENTER CURRENT MONTH AND YEAR ";
  455. 4550  LINE INPUT  "(AS MONTH,YEAR) ";MY$
  456. 4560  IF LEN(MY$)<8 OR LEN(MY$)>10 THEN 4610
  457. 4570  FOR Z=1 TO 12
  458. 4580  READ MN$
  459. 4590  IF MN$=LEFT$(MY$,3) THEN 4620 
  460. 4600  NEXT Z
  461. 4610  CLEARW 2:GOTOXY 24,1:PRINT "'";MY$;"' IS AN INVALID DATE!!!"
  462. 4620  MN=Z:RESTORE:YM=VAL(RIGHT$(MY$,4))+MN/100
  463. 4630  RETURN
  464. 4640  '
  465. 4650  '*************************************************************************
  466. 4660  '*                          BOND SUMMARY ROUTINE                         *
  467. 4670  '*************************************************************************
  468. 4680  '
  469. 4690  BONDSUM:
  470. 4700  CLEARW 2:GOTOXY 30,7:PRINT "NOW READING FILE"
  471. 4710  OPEN "R",#1,FILENAME$,47
  472. 4720  FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
  473. 4730  FOR R=1 TO LOF(1)
  474. 4740  GET #1,R
  475. 4750  FOR D=1 TO 12
  476. 4760  READ MO$
  477. 4770  IF MO$=LEFT$(D$,3) THEN 4790
  478. 4780  NEXT D
  479. 4790  RESTORE
  480. 4800  JD=VAL(RIGHT$(M$,4))+(D/100)
  481. 4810  FV=FV+VAL(A$)
  482. 4820  IF T$="E " THEN EN=EN+1:V=V+VAL(A$)
  483. 4830  IF T$="EE" THEN EE=EE+1:EV=EV+VAL(A$)
  484. 4840  IF JD<=YM THEN MB=MB+1:MV=MV+VAL(A$)
  485. 4850  NEXT R
  486. 4860  CLOSE #1:RETURN
  487. 4870  '
  488. 4880  '*************************************************************************
  489. 4890  '*                            NEWPAGE ROUTINE                            *
  490. 4900  '*************************************************************************
  491. 4910  '
  492. 4920  NEWPAGE:
  493. 4930  LPRINT:LPRINT:LPRINT
  494. 4940  GOSUB HEADINGS
  495. 4950  RETURN
  496. 4960  '
  497. 4970  '*************************************************************************
  498. 4980  '*                           HEADINGS SUBROUTINE                         *
  499. 4990  '*************************************************************************
  500. 5000  '
  501. 5010  HEADINGS:
  502. 5020  PAGENO=PAGENO+1
  503. 5030  LPRINT TAB(7);CHR$(27);"W1";CHR$(27);"E";"PRINTOUT OF FILE NAMED ";
  504. 5040  LPRINT FILENAME$:LPRINT CHR$(27);"W0";
  505. 5050  LPRINT TAB(31);"(AS OF ";MY$;")";TAB(73);"PAGE";PAGENO:LPRINT CHR$(27);"F"
  506. 5060  LPRINT TAB(16);"BOND";TAB(26);"ORIGINAL";TAB(59);"FACE"
  507. 5070  LPRINT CHR$(27);"D";CHR$(15);CHR$(27);CHR$(39);CHR$(58);CHR$(68);CHR$(0);
  508. 5080  LPRINT CHR$(27);"-1";"DATE ISSUED";CHR$(9);"TYPE";CHR$(9);"COST";
  509. 5090  LPRINT CHR$(9);"BOND NUMBER";CHR$(9);"VALUE";CHR$(9);"DATE MATURE"
  510. 5100  LPRINT CHR$(27);"-0";CHR$(27)"@":PL=6
  511. 5110  RETURN
  512. 5120  '
  513. 5130  '*************************************************************************
  514. 5140  END
  515. ə